package 贪心;

import java.util.Arrays;

/**
 * @author aodre , QQ : 480029069
 * @date 2022/12/7 19:35
 */
public class leetcode1775最小操作使数组和最小 {


    /*
        自己的实现方式
        这个 有点 不符合题意得！
        题意 nums1 和  nums2 两个数组中元素得值都可以变化
        但是 下面  的 代码 只是 仅仅让 nums1 数组的元素变化
        所以按照 连个数组 都可以变化的话 ，难度变大了！
     */

    public int solution(int nums1[],int nums2[]){
        Arrays.sort(nums1);
        int sum1 = 0;
        int sum2 = 0;
        for(int i = 0;i < nums1.length;i++){
            sum1 += nums1[i];
        }
        for(int i = 0;i < nums2.length;i++){
            sum2 += nums2[i];
        }
        int value = sum1 - sum2;
        // 如果 差值 value 超过 最大变化的极限， 那么无论怎么操作都没办法！
        if(nums1.length * 5 < Math.abs(value))
            return -1;
        int ans = 0;
        if(value > 0){
            for(int i = nums1.length - 1;i >= 0; i--){
                value -= nums1[i] - 1;
                if(value <= 0)
                    return ans + 1;
                ans++;
            }
        }
        else if (value < 0){
            for(int i = 0;i < nums1.length;i++){
                value += 6 - nums1[i];
                if(value >= 0)
                    return ans + 1;
                ans ++;
            }
        }

        return ans;
    }


}
